
#使用正则表达式，和之前的字符串直接识别替换replace不同之处在于对一些括号的识别需要加转义字符'\'。
import re
def string_switch(x,y,z):
    with open(x, "r", encoding="utf-8") as f:#打开文件
        #readlines以列表的形式将文件读出
        lines = f.readlines()#读取所有行到内存
 
    with open(x, "w", encoding="utf-8") as f_w:
        for line in lines:
            
            #print(line)
            if re.search(y,line):#用于判断该行中是否匹配给定字符。没有的话就直接写入。
                
                
                line=re.sub(y,z,line)#如果匹配到给定字符，就将改行组成的字符串中的给定字符替换
                    #必须将替换之后的结果赋值为line,而不能换为其他如line1.
                
            f_w.write(line)#写入，包含处理过的写入和不必处理的写入。
        

lis1=['P','o','u','V','\(','\]','hu','hi']#注意正则的匹配小括号中括号必须加转义字符'\'
lis2=['p','l','d','v','[',')','00','11']#另一侧不需要加转义字符。
#注意匹配是按照列表顺序来的，先匹配的肯定会对后匹配的产生影响。

for i in lis1:
    string_switch('exp.txt',i,lis2[lis1.index(i)])



#print(re.sub('\(','[','sang(shu)'))#在正则表达式中使用匹配小括号的方法，'\('
#print(re.sub('\[','(','sang(s[hu)'))#匹配中括号的方法，'\['

